/**
 * IT渠道网核心技术支持
 * 引用使用es6的module引入和定义
 * 全局变量以g_开头
 * 私有函数以_开头
 */
import {Config} from 'config.js';

class Token {
    constructor() {
        this.verifyUrl = Config.restUrl + 'min/token/verify'; // 校验token
        this.tokenUrl  = Config.restUrl + 'min/token/user'; // 获取token
    }
    /**
     * 校验令牌
     */
    verify() {
        var token = wx.getStorageSync('token'); // 获取缓存token
        if (!token) {
            this.getTokenFromServer(); // 获取新
        } else {
            this._veirfyFromServer(token); // 校验
        }
    }
    /**
     * 校验 客户端token在服务端是否获取到缓存(存在7200秒)
     */
    _veirfyFromServer(token) {
        var that = this;
        wx.request({
            url: that.verifyUrl,
            method: 'POST',
            data: {
                token: token
            },
            success: function (res) {
                var valid = res.data.isValid; // 返回true或false
                console.log(2, valid);
                if(!valid){
                    that.getTokenFromServer();
                }
            }
        })
    }
    /**
     * 获取新token(存在7200秒)
     */
    getTokenFromServer(callBack) {
        var that = this;
        wx.login({
            success: function (res) {
                console.log(0, res.code);
                wx.request({
                    url: that.tokenUrl,
                    method: 'POST',
                    data: {
                        code: res.code
                    },
                    success: function(res){
                        console.log(1, res.data.token);
                        wx.setStorageSync('token', res.data.token);
                        callBack && callBack(res.data.token); // 请求失败,获取新token,刷新一次这次请求
                    }
                })
            }
        })
    }
}

export {Token};